@effekt-lang/effekt 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -18
- package/bin/effekt +0 -0
- package/libraries/common/args.effekt +0 -27
- package/libraries/common/array.effekt +11 -16
- package/libraries/common/bench.effekt +32 -6
- package/libraries/common/effekt.effekt +30 -69
- package/libraries/common/exception.effekt +0 -1
- package/libraries/common/io/console.effekt +32 -36
- package/libraries/common/io/error.effekt +111 -2
- package/libraries/common/io/filesystem.effekt +274 -0
- package/libraries/common/io/network.effekt +30 -54
- package/libraries/common/io/time.effekt +9 -12
- package/libraries/common/io.effekt +54 -124
- package/libraries/common/list.effekt +18 -0
- package/libraries/common/process.effekt +0 -1
- package/libraries/common/ref.effekt +4 -7
- package/libraries/common/string/tty.effekt +66 -0
- package/libraries/common/string.effekt +0 -34
- package/libraries/common/test.effekt +96 -34
- package/libraries/js/unsafe/cont.effekt +1 -1
- package/libraries/llvm/io.c +258 -378
- package/libraries/llvm/main.c +3 -0
- package/libraries/llvm/rts.ll +57 -38
- package/libraries/llvm/types.c +10 -1
- package/licenses/eclipse public license, version 2.0 - epl-2.0.html +4 -4
- package/licenses/mit license - mit-license.html +19 -19
- package/licenses/the bsd license - bsd-license.html +19 -19
- package/licenses/the mit license - mit.html +20 -20
- package/package.json +1 -1
- package/libraries/chez/lift/effekt.ss +0 -118
- package/libraries/common/io/files.effekt +0 -282
- package/libraries/js/io.js +0 -143
- package/libraries/llvm/io.ll +0 -19
- package/libraries/ml/effekt.sml +0 -65
- package/libraries/ml/internal/mllist.effekt +0 -9
- package/libraries/ml/internal/mloption.effekt +0 -18
- package/libraries/ml/random.effekt +0 -85
- package/libraries/ml/text/regex.effekt +0 -102
|
@@ -213,7 +213,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
|
|
|
213
213
|
padding: 0 !important;
|
|
214
214
|
}
|
|
215
215
|
</style>
|
|
216
|
-
<link rel='stylesheet' id='wp-block-library-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/block-library/style.css?ver=19.
|
|
216
|
+
<link rel='stylesheet' id='wp-block-library-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/block-library/style.css?ver=19.3.0' type='text/css' media='all' />
|
|
217
217
|
<style id='osi-event-list-style-inline-css' type='text/css'>
|
|
218
218
|
/*!***************************************************************************************************************************************************************************************************************************************!*\
|
|
219
219
|
!*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!./src/style.scss ***!
|
|
@@ -243,15 +243,15 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
|
|
|
243
243
|
<link rel='stylesheet' id='coblocks-extensions-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-extensions.css?ver=3.1.13' type='text/css' media='all' />
|
|
244
244
|
<link rel='stylesheet' id='coblocks-animation-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/dist/style-coblocks-animation.css?ver=2677611078ee87eb3b1c' type='text/css' media='all' />
|
|
245
245
|
<link rel='stylesheet' id='contact-form-7-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.9.8' type='text/css' media='all' />
|
|
246
|
-
<link rel='stylesheet' id='events-manager-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/css/events-manager.min.css?ver=6.
|
|
247
|
-
<link rel='stylesheet' id='events-manager-pro-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager-pro/includes/css/events-manager-pro.css?ver=3.
|
|
246
|
+
<link rel='stylesheet' id='events-manager-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/css/events-manager.min.css?ver=6.6.1' type='text/css' media='all' />
|
|
247
|
+
<link rel='stylesheet' id='events-manager-pro-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager-pro/includes/css/events-manager-pro.css?ver=3.4.1' type='text/css' media='all' />
|
|
248
248
|
<style id='global-styles-inline-css' type='text/css'>
|
|
249
249
|
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--brand-color-1: #3Ea638;--wp--preset--color--brand-color-2: #FB923c;--wp--preset--color--brand-color-3: #ebc342;--wp--preset--color--brand-color-4: #e66d4c;--wp--preset--color--brand-color-5: #1c531d;--wp--preset--color--brand-links: #23881f;--wp--preset--color--brand-alert: #a11c2e;--wp--preset--color--neutral-white: #ffffff;--wp--preset--color--neutral-lightest: #f2f3f2;--wp--preset--color--neutral-light: #d2d2d2;--wp--preset--color--neutral-mid: #949494;--wp--preset--color--neutral-dark: #414042;--wp--preset--color--neutral-darkest: #000000;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--gradient--brand-color-1-gradient-darker: linear-gradient(135deg,#3Ea638 0%,#1f531c 100%);--wp--preset--gradient--brand-color-1-gradient-lighter: linear-gradient(135deg,#3Ea638 0%,#63ff59 100%);--wp--preset--gradient--brand-color-2-gradient-darker: linear-gradient(135deg,#FB923c 0%,#7d491e 100%);--wp--preset--gradient--brand-color-2-gradient-lighter: linear-gradient(135deg,#FB923c 0%,#ffe960 100%);--wp--preset--gradient--brand-color-3-gradient-darker: linear-gradient(135deg,#ebc342 0%,#756121 100%);--wp--preset--gradient--brand-color-3-gradient-lighter: linear-gradient(135deg,#ebc342 0%,#ffff69 100%);--wp--preset--gradient--brand-color-4-gradient-darker: linear-gradient(135deg,#e66d4c 0%,#733626 100%);--wp--preset--gradient--brand-color-4-gradient-lighter: linear-gradient(135deg,#e66d4c 0%,#ffae79 100%);--wp--preset--gradient--brand-color-5-gradient-darker: linear-gradient(135deg,#1c531d 0%,#0e290e 100%);--wp--preset--gradient--brand-color-5-gradient-lighter: linear-gradient(135deg,#1c531d 0%,#2c842e 100%);--wp--preset--gradient--brand-color-1-brand-color-2-gradient: linear-gradient(135deg,#3Ea638 0%,#FB923c 100%);--wp--preset--gradient--brand-color-1-brand-color-3-gradient: linear-gradient(135deg,#3Ea638 0%,#ebc342 100%);--wp--preset--gradient--brand-color-1-brand-color-4-gradient: linear-gradient(135deg,#3Ea638 0%,#e66d4c 100%);--wp--preset--gradient--brand-color-1-brand-color-5-gradient: linear-gradient(135deg,#3Ea638 0%,#1c531d 100%);--wp--preset--gradient--brand-color-2-brand-color-3-gradient: linear-gradient(135deg,#FB923c 0%,#ebc342 100%);--wp--preset--gradient--brand-color-2-brand-color-4-gradient: linear-gradient(135deg,#FB923c 0%,#e66d4c 100%);--wp--preset--gradient--brand-color-2-brand-color-5-gradient: linear-gradient(135deg,#FB923c 0%,#1c531d 100%);--wp--preset--gradient--brand-color-3-brand-color-4-gradient: linear-gradient(135deg,#ebc342 0%,#e66d4c 100%);--wp--preset--gradient--brand-color-3-brand-color-5-gradient: linear-gradient(135deg,#ebc342 0%,#1c531d 100%);--wp--preset--gradient--brand-color-4-brand-color-5-gradient: linear-gradient(135deg,#e66d4c 0%,#1c531d 100%);--wp--preset--font-size--small: clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.156), 16px);--wp--preset--font-size--medium: clamp(22px, 1.375rem + ((1vw - 3.2px) * 0.156), 24px);--wp--preset--font-size--large: clamp(24px, 1.5rem + ((1vw - 3.2px) * 0.313), 28px);--wp--preset--font-size--x-large: clamp(28px, 1.75rem + ((1vw - 3.2px) * 1.563), 48px);--wp--preset--font-size--x-small: clamp(12px, 0.75rem + ((1vw - 3.2px) * 1), 12px);--wp--preset--font-size--normal: clamp(16px, 1rem + ((1vw - 3.2px) * 0.313), 20px);--wp--preset--font-size--xx-large: clamp(30px, 1.875rem + ((1vw - 3.2px) * 2.656), 64px);--wp--preset--font-family--system-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;--wp--preset--font-family--libre-franklin: 'Libre Franklin', sans-serif;--wp--preset--font-family--space-mono: 'Space Mono', monospace;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);--wp--custom--alignment--aligned-max-width: 50%;--wp--custom--animation--transition-duration: 0.3s;--wp--custom--animation--transition-type: all;--wp--custom--button--border--color: var(--wp--preset--color--brand-color-2);--wp--custom--button--border--color-secondary: var(--wp--preset--color--brand-color-1);--wp--custom--button--border--radius: 50px;--wp--custom--button--border--style: solid;--wp--custom--button--border--width: 2px;--wp--custom--button--color--background: var(--wp--preset--color--brand-color-2);--wp--custom--button--color--background-secondary: var(--wp--preset--color--brand-color-1);--wp--custom--button--color--text: var(--wp--preset--color--neutral-dark);--wp--custom--button--hover--color--text: var(--wp--custom--color--foreground);--wp--custom--button--hover--color--background: var(--wp--custom--color--background);--wp--custom--button--hover--border--color: var(--wp--custom--color--foreground);--wp--custom--button--spacing--padding--top: 0.7em;--wp--custom--button--spacing--padding--bottom: 0.7em;--wp--custom--button--spacing--padding--left: 1.75em;--wp--custom--button--spacing--padding--right: 1.75em;--wp--custom--button--typography--font-family: var(--wp--custom--typography--body--font-family);--wp--custom--button--typography--font-size: var(--wp--preset--font-size--normal);--wp--custom--button--typography--font-weight: 600;--wp--custom--button--typography--line-height: 1;--wp--custom--color--foreground: var(--wp--custom--typography--body--color);--wp--custom--color--background: var(--wp--preset--color--white);--wp--custom--color--primary: var(--wp--preset--color--brand-color-1);--wp--custom--color--secondary: var(--wp--preset--color--brand-color-2);--wp--custom--color--tertiary: var(--wp--preset--color--brand-color-3);--wp--custom--form--padding: 15px;--wp--custom--form--border--color: var(--wp--preset--color--neutral-dark);--wp--custom--form--border--radius: 0;--wp--custom--form--border--style: solid;--wp--custom--form--border--width: 1px;--wp--custom--form--checkbox--checked--content: "\2715";--wp--custom--form--checkbox--checked--font-size: var(--wp--preset--font-size--x-small);--wp--custom--form--checkbox--checked--position--left: 3px;--wp--custom--form--checkbox--checked--position--top: 3px;--wp--custom--form--checkbox--checked--sizing--height: 12px;--wp--custom--form--checkbox--checked--sizing--width: 12px;--wp--custom--form--checkbox--unchecked--content: "";--wp--custom--form--checkbox--unchecked--position--left: 0;--wp--custom--form--checkbox--unchecked--position--top: 0.2em;--wp--custom--form--checkbox--unchecked--sizing--height: 16px;--wp--custom--form--checkbox--unchecked--sizing--width: 16px;--wp--custom--form--color--active: var(--wp--preset--color--brand-alert);--wp--custom--form--color--background: var(--wp--preset--color--neutral-white);--wp--custom--form--color--box-shadow: none;--wp--custom--form--label--spacing--margin--bottom: var(--wp--custom--gap--baseline);--wp--custom--form--label--typography--color: var(--wp--preset--color--neutral-darkest);--wp--custom--form--label--typography--font-size: var(--wp--preset--font-size--small);--wp--custom--form--label--typography--font-family: var(--wp--custom--typography--subheading--font-family);--wp--custom--form--label--typography--font-weight: normal;--wp--custom--form--label--typography--letter-spacing: normal;--wp--custom--form--label--typography--text-transform: none;--wp--custom--form--typography--color: var(--wp--preset--color--neutral-darkest);--wp--custom--form--typography--font-size: var(--wp--preset--font-size--normal);--wp--custom--form--placeholder--color: var(--wp--preset--color--neutral-dark);--wp--custom--form--placeholder--font-size: var(--wp--preset--font-size--small);--wp--custom--form--placeholder--style: italic;--wp--custom--gallery--caption--font-size: var(--wp--preset--font-size--small);--wp--custom--typography--body--color: var(--wp--preset--color--neutral-darkest);--wp--custom--typography--body--font-family: var(--wp--preset--font-family--libre-franklin);--wp--custom--typography--body--font-weight: 400;--wp--custom--typography--body--font-weight-bold: 600;--wp--custom--typography--body--letter-space: 0;--wp--custom--typography--body--line-height: 1.6;--wp--custom--typography--body--margin: 20px;--wp--custom--typography--heading--color: var(--wp--preset--color--neutral-dark);--wp--custom--typography--heading--font-family: var(--wp--preset--font-family--libre-franklin);--wp--custom--typography--heading--font-weight: 600;--wp--custom--typography--heading--font-weight-bold: 800;--wp--custom--typography--heading--letter-space: 0;--wp--custom--typography--heading--line-height: 1.125;--wp--custom--typography--heading--margin: 20px;--wp--custom--typography--subheading--color: var(--wp--preset--color--neutral-darkest);--wp--custom--typography--subheading--font-family: var(--wp--preset--font-family--libre-franklin);--wp--custom--typography--subheading--font-weight: 600;--wp--custom--typography--subheading--font-weight-bold: 800;--wp--custom--typography--subheading--letter-space: 0;--wp--custom--typography--subheading--line-height: 1.125;--wp--custom--latest-posts--meta--color--text: var(--wp--custom--color--primary);--wp--custom--layout--content-size: 730px;--wp--custom--layout--wide-size: 1180px;--wp--custom--layout--narrow-size: 600px;--wp--custom--layout--post-size: 920px;--wp--custom--layout--sidebar-width-small: 80%;--wp--custom--layout--sidebar-width-mid: 60%;--wp--custom--gap--baseline: var(--wp--custom--spacing--small-padding);--wp--custom--gap--horizontal: min(var(--wp--custom--spacing--small-padding), 5vw);--wp--custom--gap--vertical: min(var(--wp--custom--spacing--small-padding), 5vw);--wp--custom--gap--horizontal-sm: var(--wp--custom--spacing--small-padding);--wp--custom--gap--horizontal-md: var(--wp--custom--spacing--mid-padding);--wp--custom--gap--horizontal-lg: var(--wp--custom--spacing--max-padding);--wp--custom--gap--vertical-sm: var(--wp--custom--spacing--small-padding);--wp--custom--navigation--submenu--border--color: transparent;--wp--custom--navigation--submenu--border--radius: var(--wp--custom--form--border--radius);--wp--custom--navigation--submenu--border--style: var(--wp--custom--form--border--style);--wp--custom--navigation--submenu--border--width: var(--wp--custom--form--border--width);--wp--custom--navigation--submenu--color--background: var(--wp--custom--color--primary);--wp--custom--navigation--submenu--color--text: var(--wp--custom--color--background);--wp--custom--page--title--font-size: var(--wp--preset--font-size--x-large);--wp--custom--page--title--margin: 1.5em;--wp--custom--paragraph--dropcap--margin: .1em .1em 0 0;--wp--custom--paragraph--dropcap--typography--font-size: 110px;--wp--custom--paragraph--dropcap--typography--font-weight: 400;--wp--custom--paragraph--link--typography--text-decoration: underline;--wp--custom--paragraph--link--hover--typography--text-decoration: none;--wp--custom--paragraph--link--focus--typography--text-decoration: none;--wp--custom--post-author--typography--font-weight: normal;--wp--custom--post-comment--typography--font-size: var(--wp--preset--font-size--normal);--wp--custom--post-comment--typography--line-height: var(--wp--custom--typography--body--line-height);--wp--custom--pullquote--citation--typography--font-size: var(--wp--preset--font-size--x-small);--wp--custom--pullquote--citation--typography--font-family: inherit;--wp--custom--pullquote--citation--typography--font-style: italic;--wp--custom--pullquote--citation--spacing--margin--top: var(--wp--custom--gap--vertical);--wp--custom--pullquote--typography--text-align: left;--wp--custom--pullquote--typography--font-size: var(--wp--preset--font-size--medium);--wp--custom--quote--citation--typography--font-size: var(--wp--preset--font-size--x-small);--wp--custom--quote--citation--typography--font-style: italic;--wp--custom--quote--citation--typography--font-weight: 400;--wp--custom--quote--typography--text-align: left;--wp--custom--quote--typography--font-size: var(--wp--preset--font-size--medium);--wp--custom--quote--typography--line-height: 1.4;--wp--custom--separator--opacity: 1;--wp--custom--separator--width: 150px;--wp--custom--spacing--small-padding: 16px;--wp--custom--spacing--mid-padding: 32px;--wp--custom--spacing--max-padding: 48px;--wp--custom--table--border--color: ;--wp--custom--table--border--width: 1px;--wp--custom--table--border--style: solid;--wp--custom--table--color--background: transparent;--wp--custom--table--header--border--color: ;--wp--custom--table--header--border--width: 2px;--wp--custom--table--header--color--background: red;--wp--custom--table--typography--font-size: var(--wp--preset--font-size--small);--wp--custom--table--typography--line-height: 1.4;--wp--custom--table--figcaption--typography--font-size: var(--wp--preset--font-size--x-small);--wp--custom--table--spacing--cell-padding: .25em;--wp--custom--video--caption--text-align: center;--wp--custom--video--caption--margin: var(--wp--custom--gap--vertical) auto;}:root { --wp--style--global--content-size: var(--wp--custom--layout--content-size);--wp--style--global--wide-size: var(--wp--custom--layout--wide-size); }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 24px; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 24px; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 24px;}:root :where(.is-layout-grid){gap: 24px;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}a:where(:not(.wp-element-button)){text-decoration: underline;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-brand-color-1-color{color: var(--wp--preset--color--brand-color-1) !important;}.has-brand-color-2-color{color: var(--wp--preset--color--brand-color-2) !important;}.has-brand-color-3-color{color: var(--wp--preset--color--brand-color-3) !important;}.has-brand-color-4-color{color: var(--wp--preset--color--brand-color-4) !important;}.has-brand-color-5-color{color: var(--wp--preset--color--brand-color-5) !important;}.has-brand-links-color{color: var(--wp--preset--color--brand-links) !important;}.has-brand-alert-color{color: var(--wp--preset--color--brand-alert) !important;}.has-neutral-white-color{color: var(--wp--preset--color--neutral-white) !important;}.has-neutral-lightest-color{color: var(--wp--preset--color--neutral-lightest) !important;}.has-neutral-light-color{color: var(--wp--preset--color--neutral-light) !important;}.has-neutral-mid-color{color: var(--wp--preset--color--neutral-mid) !important;}.has-neutral-dark-color{color: var(--wp--preset--color--neutral-dark) !important;}.has-neutral-darkest-color{color: var(--wp--preset--color--neutral-darkest) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-brand-color-1-background-color{background-color: var(--wp--preset--color--brand-color-1) !important;}.has-brand-color-2-background-color{background-color: var(--wp--preset--color--brand-color-2) !important;}.has-brand-color-3-background-color{background-color: var(--wp--preset--color--brand-color-3) !important;}.has-brand-color-4-background-color{background-color: var(--wp--preset--color--brand-color-4) !important;}.has-brand-color-5-background-color{background-color: var(--wp--preset--color--brand-color-5) !important;}.has-brand-links-background-color{background-color: var(--wp--preset--color--brand-links) !important;}.has-brand-alert-background-color{background-color: var(--wp--preset--color--brand-alert) !important;}.has-neutral-white-background-color{background-color: var(--wp--preset--color--neutral-white) !important;}.has-neutral-lightest-background-color{background-color: var(--wp--preset--color--neutral-lightest) !important;}.has-neutral-light-background-color{background-color: var(--wp--preset--color--neutral-light) !important;}.has-neutral-mid-background-color{background-color: var(--wp--preset--color--neutral-mid) !important;}.has-neutral-dark-background-color{background-color: var(--wp--preset--color--neutral-dark) !important;}.has-neutral-darkest-background-color{background-color: var(--wp--preset--color--neutral-darkest) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-brand-color-1-border-color{border-color: var(--wp--preset--color--brand-color-1) !important;}.has-brand-color-2-border-color{border-color: var(--wp--preset--color--brand-color-2) !important;}.has-brand-color-3-border-color{border-color: var(--wp--preset--color--brand-color-3) !important;}.has-brand-color-4-border-color{border-color: var(--wp--preset--color--brand-color-4) !important;}.has-brand-color-5-border-color{border-color: var(--wp--preset--color--brand-color-5) !important;}.has-brand-links-border-color{border-color: var(--wp--preset--color--brand-links) !important;}.has-brand-alert-border-color{border-color: var(--wp--preset--color--brand-alert) !important;}.has-neutral-white-border-color{border-color: var(--wp--preset--color--neutral-white) !important;}.has-neutral-lightest-border-color{border-color: var(--wp--preset--color--neutral-lightest) !important;}.has-neutral-light-border-color{border-color: var(--wp--preset--color--neutral-light) !important;}.has-neutral-mid-border-color{border-color: var(--wp--preset--color--neutral-mid) !important;}.has-neutral-dark-border-color{border-color: var(--wp--preset--color--neutral-dark) !important;}.has-neutral-darkest-border-color{border-color: var(--wp--preset--color--neutral-darkest) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-brand-color-1-gradient-darker-gradient-background{background: var(--wp--preset--gradient--brand-color-1-gradient-darker) !important;}.has-brand-color-1-gradient-lighter-gradient-background{background: var(--wp--preset--gradient--brand-color-1-gradient-lighter) !important;}.has-brand-color-2-gradient-darker-gradient-background{background: var(--wp--preset--gradient--brand-color-2-gradient-darker) !important;}.has-brand-color-2-gradient-lighter-gradient-background{background: var(--wp--preset--gradient--brand-color-2-gradient-lighter) !important;}.has-brand-color-3-gradient-darker-gradient-background{background: var(--wp--preset--gradient--brand-color-3-gradient-darker) !important;}.has-brand-color-3-gradient-lighter-gradient-background{background: var(--wp--preset--gradient--brand-color-3-gradient-lighter) !important;}.has-brand-color-4-gradient-darker-gradient-background{background: var(--wp--preset--gradient--brand-color-4-gradient-darker) !important;}.has-brand-color-4-gradient-lighter-gradient-background{background: var(--wp--preset--gradient--brand-color-4-gradient-lighter) !important;}.has-brand-color-5-gradient-darker-gradient-background{background: var(--wp--preset--gradient--brand-color-5-gradient-darker) !important;}.has-brand-color-5-gradient-lighter-gradient-background{background: var(--wp--preset--gradient--brand-color-5-gradient-lighter) !important;}.has-brand-color-1-brand-color-2-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-1-brand-color-2-gradient) !important;}.has-brand-color-1-brand-color-3-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-1-brand-color-3-gradient) !important;}.has-brand-color-1-brand-color-4-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-1-brand-color-4-gradient) !important;}.has-brand-color-1-brand-color-5-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-1-brand-color-5-gradient) !important;}.has-brand-color-2-brand-color-3-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-2-brand-color-3-gradient) !important;}.has-brand-color-2-brand-color-4-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-2-brand-color-4-gradient) !important;}.has-brand-color-2-brand-color-5-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-2-brand-color-5-gradient) !important;}.has-brand-color-3-brand-color-4-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-3-brand-color-4-gradient) !important;}.has-brand-color-3-brand-color-5-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-3-brand-color-5-gradient) !important;}.has-brand-color-4-brand-color-5-gradient-gradient-background{background: var(--wp--preset--gradient--brand-color-4-brand-color-5-gradient) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-x-small-font-size{font-size: var(--wp--preset--font-size--x-small) !important;}.has-normal-font-size{font-size: var(--wp--preset--font-size--normal) !important;}.has-xx-large-font-size{font-size: var(--wp--preset--font-size--xx-large) !important;}.has-system-font-font-family{font-family: var(--wp--preset--font-family--system-font) !important;}.has-libre-franklin-font-family{font-family: var(--wp--preset--font-family--libre-franklin) !important;}.has-space-mono-font-family{font-family: var(--wp--preset--font-family--space-mono) !important;}
|
|
250
250
|
:root :where(.wp-block-pullquote){font-size: clamp(0.984em, 0.984rem + ((1vw - 0.2em) * 0.645), 1.5em);line-height: 1.6;}
|
|
251
251
|
</style>
|
|
252
252
|
<link rel='stylesheet' id='cmplz-general-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/assets/css/cookieblocker.min.css?ver=1717180759' type='text/css' media='all' />
|
|
253
253
|
<link rel='stylesheet' id='dashicons-css' href='https://c0.wp.com/c/6.6.2/wp-includes/css/dashicons.min.css' type='text/css' media='all' />
|
|
254
|
-
<link rel='stylesheet' id='wp-components-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/components/style.css?ver=19.
|
|
254
|
+
<link rel='stylesheet' id='wp-components-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/components/style.css?ver=19.3.0' type='text/css' media='all' />
|
|
255
255
|
<link rel='stylesheet' id='godaddy-styles-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/coblocks/includes/Dependencies/GoDaddy/Styles/build/latest.css?ver=2.0.2' type='text/css' media='all' />
|
|
256
256
|
<link rel='stylesheet' id='indieweb-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/indieweb/static/css/indieweb.css?ver=4.0.5' type='text/css' media='all' />
|
|
257
257
|
<link rel='stylesheet' id='webmention-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/webmention/assets/css/webmention.css?ver=5.3.3' type='text/css' media='all' />
|
|
@@ -267,8 +267,7 @@ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15
|
|
|
267
267
|
</style>
|
|
268
268
|
<link rel='stylesheet' id='genericons-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/_inc/genericons/genericons/genericons.css?ver=3.1' type='text/css' media='all' />
|
|
269
269
|
<link rel='stylesheet' id='syndication-style-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/syndication-links/css/syn.min.css?ver=4.4.20' type='text/css' media='all' />
|
|
270
|
-
<link rel='stylesheet' id='jetpack_css-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/css/jetpack.css?ver=13.9-a.
|
|
271
|
-
<script type="text/javascript" src="https://c0.wp.com/c/6.6.2/wp-includes/js/dist/vendor/wp-polyfill.min.js" id="wp-polyfill-js"></script>
|
|
270
|
+
<link rel='stylesheet' id='jetpack_css-css' href='https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/css/jetpack.css?ver=13.9-a.7' type='text/css' media='all' />
|
|
272
271
|
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/hooks/index.min.js?ver=3aee234ea7807d8d70bc" id="wp-hooks-js"></script>
|
|
273
272
|
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/i18n/index.min.js?ver=5baa98e4345eccc97e24" id="wp-i18n-js"></script>
|
|
274
273
|
<script type="text/javascript" id="wp-i18n-js-after">
|
|
@@ -295,11 +294,11 @@ jQuery(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","curr
|
|
|
295
294
|
<script type="text/javascript" src="https://c0.wp.com/c/6.6.2/wp-includes/js/jquery/ui/dialog.min.js" id="jquery-ui-dialog-js"></script>
|
|
296
295
|
<script type="text/javascript" id="events-manager-js-extra">
|
|
297
296
|
/* <![CDATA[ */
|
|
298
|
-
var EM = {"ajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","locationajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager\/includes\/css\/jquery-ui\/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false}},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"
|
|
297
|
+
var EM = {"ajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","locationajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager\/includes\/css\/jquery-ui\/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false}},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https:\/\/opensource.org\/wp-content\/plugins\/events-manager","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"909f77b5a9","attendance_api_url":"https:\/\/opensource.org\/wp-json\/events-manager\/v1\/attendance"};
|
|
299
298
|
/* ]]> */
|
|
300
299
|
</script>
|
|
301
|
-
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/js/events-manager.js?ver=6.
|
|
302
|
-
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager-pro/includes/js/events-manager-pro.js?ver=3.
|
|
300
|
+
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager/includes/js/events-manager.js?ver=6.6.1" id="events-manager-js"></script>
|
|
301
|
+
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/events-manager-pro/includes/js/events-manager-pro.js?ver=3.4.1" id="events-manager-pro-js"></script>
|
|
303
302
|
<script type="text/javascript" defer data-domain='opensource.org' data-api='https://opensource.org/wp-json/fcdf21/v1/da74/d08e74b0' data-cfasync='false' src="//opensource.org/wp-content/uploads/4931f7089c/801c1c58.js?ver=1707914173" id="plausible"></script>
|
|
304
303
|
<script type="text/javascript" id="plausible-analytics-js-after">
|
|
305
304
|
/* <![CDATA[ */
|
|
@@ -1200,31 +1199,32 @@ var wpcf7 = {"api":{"root":"https:\/\/opensource.org\/wp-json\/","namespace":"co
|
|
|
1200
1199
|
wp.jpI18nLoader.state = {"baseUrl":"https://opensource.org/wp-content/languages/","locale":"en_US","domainMap":{"jetpack-admin-ui":"plugins/jetpack","jetpack-assets":"plugins/jetpack","jetpack-backup-pkg":"plugins/jetpack","jetpack-blaze":"plugins/jetpack","jetpack-boost-core":"plugins/jetpack","jetpack-boost-speed-score":"plugins/jetpack","jetpack-classic-theme-helper":"plugins/jetpack","jetpack-compat":"plugins/jetpack","jetpack-config":"plugins/jetpack","jetpack-connection":"plugins/jetpack","jetpack-explat":"plugins/jetpack","jetpack-forms":"plugins/jetpack","jetpack-image-cdn":"plugins/jetpack","jetpack-import":"plugins/jetpack","jetpack-ip":"plugins/jetpack","jetpack-jitm":"plugins/jetpack","jetpack-licensing":"plugins/jetpack","jetpack-masterbar":"plugins/jetpack","jetpack-my-jetpack":"plugins/jetpack","jetpack-password-checker":"plugins/jetpack","jetpack-plugins-installer":"plugins/jetpack","jetpack-post-list":"plugins/jetpack","jetpack-protect-models":"plugins/jetpack","jetpack-protect-status":"plugins/jetpack","jetpack-publicize-pkg":"plugins/jetpack","jetpack-search-pkg":"plugins/jetpack","jetpack-stats":"plugins/jetpack","jetpack-stats-admin":"plugins/jetpack","jetpack-sync":"plugins/jetpack","jetpack-videopress-pkg":"plugins/jetpack","jetpack-waf":"plugins/jetpack","jetpack-wordads":"plugins/jetpack","woocommerce-analytics":"plugins/jetpack"},"domainPaths":{"jetpack-admin-ui":"jetpack_vendor/automattic/jetpack-admin-ui/","jetpack-assets":"jetpack_vendor/automattic/jetpack-assets/","jetpack-backup-pkg":"jetpack_vendor/automattic/jetpack-backup/","jetpack-blaze":"jetpack_vendor/automattic/jetpack-blaze/","jetpack-boost-core":"jetpack_vendor/automattic/jetpack-boost-core/","jetpack-boost-speed-score":"jetpack_vendor/automattic/jetpack-boost-speed-score/","jetpack-classic-theme-helper":"jetpack_vendor/automattic/jetpack-classic-theme-helper/","jetpack-compat":"jetpack_vendor/automattic/jetpack-compat/","jetpack-config":"jetpack_vendor/automattic/jetpack-config/","jetpack-connection":"jetpack_vendor/automattic/jetpack-connection/","jetpack-explat":"jetpack_vendor/automattic/jetpack-explat/","jetpack-forms":"jetpack_vendor/automattic/jetpack-forms/","jetpack-image-cdn":"jetpack_vendor/automattic/jetpack-image-cdn/","jetpack-import":"jetpack_vendor/automattic/jetpack-import/","jetpack-ip":"jetpack_vendor/automattic/jetpack-ip/","jetpack-jitm":"jetpack_vendor/automattic/jetpack-jitm/","jetpack-licensing":"jetpack_vendor/automattic/jetpack-licensing/","jetpack-masterbar":"jetpack_vendor/automattic/jetpack-masterbar/","jetpack-my-jetpack":"jetpack_vendor/automattic/jetpack-my-jetpack/","jetpack-password-checker":"jetpack_vendor/automattic/jetpack-password-checker/","jetpack-plugins-installer":"jetpack_vendor/automattic/jetpack-plugins-installer/","jetpack-post-list":"jetpack_vendor/automattic/jetpack-post-list/","jetpack-protect-models":"jetpack_vendor/automattic/jetpack-protect-models/","jetpack-protect-status":"jetpack_vendor/automattic/jetpack-protect-status/","jetpack-publicize-pkg":"jetpack_vendor/automattic/jetpack-publicize/","jetpack-search-pkg":"jetpack_vendor/automattic/jetpack-search/","jetpack-stats":"jetpack_vendor/automattic/jetpack-stats/","jetpack-stats-admin":"jetpack_vendor/automattic/jetpack-stats-admin/","jetpack-sync":"jetpack_vendor/automattic/jetpack-sync/","jetpack-videopress-pkg":"jetpack_vendor/automattic/jetpack-videopress/","jetpack-waf":"jetpack_vendor/automattic/jetpack-waf/","jetpack-wordads":"jetpack_vendor/automattic/jetpack-wordads/","woocommerce-analytics":"jetpack_vendor/automattic/woocommerce-analytics/"}};
|
|
1201
1200
|
/* ]]> */
|
|
1202
1201
|
</script>
|
|
1203
|
-
<script type="text/javascript" src="https://
|
|
1202
|
+
<script type="text/javascript" src="https://c0.wp.com/c/6.6.2/wp-includes/js/dist/vendor/wp-polyfill.min.js" id="wp-polyfill-js"></script>
|
|
1203
|
+
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/gutenberg/build/url/index.min.js?ver=e74ad4bf74882e4e920c" id="wp-url-js"></script>
|
|
1204
1204
|
<script type="text/javascript" id="jetpack-instant-search-js-before">
|
|
1205
1205
|
/* <![CDATA[ */
|
|
1206
|
-
var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23fdd7b9%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%22attachment%22%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A12%2C%22siteId%22%3A210318891%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%2C%22board-member%22%3A%7B%22singular_name%22%3A%22Board%20Member%22%2C%22name%22%3A%22Board%20Members%22%7D%2C%22license%22%3A%7B%22singular_name%22%3A%22License%22%2C%22name%22%3A%22Licenses%22%7D%2C%22meeting-minutes%22%3A%7B%22singular_name%22%3A%22Meeting%20Minutes%22%2C%22name%22%3A%22Meeting%20Minutes%22%7D%2C%22press-mentions%22%3A%7B%22singular_name%22%3A%22Press%20mentions%22%2C%22name%22%3A%22Press%20mentions%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-content%5C%2Fplugins%5C%2Fjetpack%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Atrue%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%
|
|
1206
|
+
var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23fdd7b9%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%22attachment%22%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A12%2C%22siteId%22%3A210318891%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%2C%22board-member%22%3A%7B%22singular_name%22%3A%22Board%20Member%22%2C%22name%22%3A%22Board%20Members%22%7D%2C%22license%22%3A%7B%22singular_name%22%3A%22License%22%2C%22name%22%3A%22Licenses%22%7D%2C%22meeting-minutes%22%3A%7B%22singular_name%22%3A%22Meeting%20Minutes%22%2C%22name%22%3A%22Meeting%20Minutes%22%7D%2C%22press-mentions%22%3A%7B%22singular_name%22%3A%22Press%20mentions%22%2C%22name%22%3A%22Press%20mentions%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-content%5C%2Fplugins%5C%2Fjetpack%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Atrue%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fopensource.org%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%22909f77b5a9%22%2C%22isPrivateSite%22%3Afalse%2C%22isWpcom%22%3Afalse%2C%22hasOverlayWidgets%22%3Atrue%2C%22widgets%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Post%20Types%22%2C%22type%22%3A%22post_type%22%2C%22count%22%3A6%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22post_type_0%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_1%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22taxonomy_2%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%2C%22filter_id%22%3A%22date_histogram_3%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-4%22%7D%5D%2C%22widgetsOutsideOverlay%22%3A%5B%5D%2C%22hasNonSearchWidgets%22%3Afalse%2C%22preventTrackingCookiesReset%22%3Afalse%7D"));
|
|
1207
1207
|
/* ]]> */
|
|
1208
1208
|
</script>
|
|
1209
|
-
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&ver=
|
|
1210
|
-
<script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=
|
|
1209
|
+
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&ver=868fd0077d5a6e3eaac5" id="jetpack-instant-search-js"></script>
|
|
1210
|
+
<script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=202440" id="jp-tracks-js"></script>
|
|
1211
1211
|
<script type="text/javascript" id="osi-theme-scripts-js-before">
|
|
1212
1212
|
/* <![CDATA[ */
|
|
1213
1213
|
const OSI_LICENSE_DB = {"ajaxURL":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","action":"osi_license_db"}
|
|
1214
1214
|
/* ]]> */
|
|
1215
1215
|
</script>
|
|
1216
1216
|
<script type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/themes/osi/assets/js/build/theme.js?ver=1724798073" id="osi-theme-scripts-js"></script>
|
|
1217
|
-
<script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-
|
|
1217
|
+
<script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202440.js" id="jetpack-stats-js" data-wp-strategy="defer"></script>
|
|
1218
1218
|
<script type="text/javascript" id="jetpack-stats-js-after">
|
|
1219
1219
|
/* <![CDATA[ */
|
|
1220
1220
|
_stq = window._stq || [];
|
|
1221
|
-
_stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"210318891\",\"post\":\"395\",\"tz\":\"0\",\"srv\":\"opensource.org\",\"hp\":\"atomic\",\"ac\":\"3\",\"amp\":\"0\",\"j\":\"1:13.9-a.
|
|
1221
|
+
_stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"210318891\",\"post\":\"395\",\"tz\":\"0\",\"srv\":\"opensource.org\",\"hp\":\"atomic\",\"ac\":\"3\",\"amp\":\"0\",\"j\":\"1:13.9-a.7\"}") ]);
|
|
1222
1222
|
_stq.push([ "clickTrackerInit", "210318891", "395" ]);
|
|
1223
1223
|
/* ]]> */
|
|
1224
1224
|
</script>
|
|
1225
1225
|
<script type="text/javascript" id="cmplz-cookiebanner-js-extra">
|
|
1226
1226
|
/* <![CDATA[ */
|
|
1227
|
-
var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"
|
|
1227
|
+
var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"44","version":"7.1.0","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https:\/\/opensource.org\/wp-json\/complianz\/v1\/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"16","cookie_path":"\/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https:\/\/opensource.org\/wp-content\/uploads\/complianz\/css\/banner-{banner_id}-{type}.css?v=44","page_links":{"eu":{"cookie-statement":{"title":"","url":"https:\/\/opensource.org\/meeting-minutes\/2020-05-11"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
|
|
1228
1228
|
/* ]]> */
|
|
1229
1229
|
</script>
|
|
1230
1230
|
<script defer type="text/javascript" src="https://149753425.v2.pressablecdn.com/wp-content/plugins/complianz-gdpr/cookiebanner/js/complianz.min.js?ver=1717180759" id="cmplz-cookiebanner-js"></script>
|
|
@@ -1232,8 +1232,8 @@ var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_
|
|
|
1232
1232
|
</body>
|
|
1233
1233
|
</html>
|
|
1234
1234
|
<!--
|
|
1235
|
-
generated
|
|
1236
|
-
generated in 0.
|
|
1237
|
-
served from batcache in 0.
|
|
1238
|
-
expires in
|
|
1235
|
+
generated 25 seconds ago
|
|
1236
|
+
generated in 0.531 seconds
|
|
1237
|
+
served from batcache in 0.003 seconds
|
|
1238
|
+
expires in 275 seconds
|
|
1239
1239
|
-->
|
package/package.json
CHANGED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
(define-syntax delayed
|
|
2
|
-
(syntax-rules ()
|
|
3
|
-
[(_ e ...)
|
|
4
|
-
(lambda (k) (k
|
|
5
|
-
(begin e ...)))]))
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
;; EVIDENCE
|
|
9
|
-
|
|
10
|
-
(define (here x) x)
|
|
11
|
-
|
|
12
|
-
; (define-syntax lift
|
|
13
|
-
; (syntax-rules ()
|
|
14
|
-
; [(_ m)
|
|
15
|
-
; (lambda (k1)
|
|
16
|
-
; (lambda (k2)
|
|
17
|
-
; (m (lambda (a) ((k1 a) k2)))))]))
|
|
18
|
-
|
|
19
|
-
(define (lift m)
|
|
20
|
-
(lambda (k1)
|
|
21
|
-
(lambda (k2)
|
|
22
|
-
(m (lambda (a) ((k1 a) k2))))))
|
|
23
|
-
|
|
24
|
-
(define-syntax nested-helper
|
|
25
|
-
(syntax-rules ()
|
|
26
|
-
[(_ (ev) acc) (ev acc)]
|
|
27
|
-
[(_ (ev1 ev2 ...) acc)
|
|
28
|
-
(nested-helper (ev2 ...) (ev1 acc))]))
|
|
29
|
-
|
|
30
|
-
(define-syntax nested
|
|
31
|
-
(syntax-rules ()
|
|
32
|
-
[(_ ev1 ...) (lambda (m) (nested-helper (ev1 ...) m))]))
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
;; HANDLING
|
|
36
|
-
|
|
37
|
-
; (define (reset m) (m (lambda (v) (lambda (k) (k v)))))
|
|
38
|
-
|
|
39
|
-
(define-syntax reset
|
|
40
|
-
(syntax-rules ()
|
|
41
|
-
[(_ m)
|
|
42
|
-
(m (lambda (v) (lambda (k) (k v))))]))
|
|
43
|
-
|
|
44
|
-
; ;; EXAMPLE
|
|
45
|
-
; ; (handle ([Fail_22 (Fail_109 () resume_120 (Nil_74))])
|
|
46
|
-
; ; (let ((tmp86_121 ((Fail_109 Fail_22))))
|
|
47
|
-
; ; (Cons_73 tmp86_121 (Nil_74))))
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
; capabilities first take evidence than require selection!
|
|
51
|
-
(define-syntax handle
|
|
52
|
-
(syntax-rules ()
|
|
53
|
-
[(_ (cap1 ...) body)
|
|
54
|
-
(reset (body lift cap1 ...))]))
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
(define-syntax shift
|
|
58
|
-
(syntax-rules ()
|
|
59
|
-
[(_ ev body)
|
|
60
|
-
(ev body)]))
|
|
61
|
-
|
|
62
|
-
; capabilities first take evidence than require selection!
|
|
63
|
-
(define-syntax handle-old
|
|
64
|
-
(syntax-rules ()
|
|
65
|
-
[(_ ((cap1 (op1 (arg1 ...) kid exp) ...) ...) body)
|
|
66
|
-
(reset (body lift
|
|
67
|
-
(cap1 (define-effect-op ev (arg1 ...) kid exp) ...) ...))]))
|
|
68
|
-
|
|
69
|
-
(define-syntax define-effect-op
|
|
70
|
-
(syntax-rules ()
|
|
71
|
-
[(_ ev1 (arg1 ...) kid exp ...)
|
|
72
|
-
(lambda (ev1 arg1 ...)
|
|
73
|
-
; we apply the outer evidence to the body of the operation
|
|
74
|
-
(ev1 (lambda (resume)
|
|
75
|
-
; k itself also gets evidence!
|
|
76
|
-
(let ([kid (lambda (ev v) (ev (resume v)))])
|
|
77
|
-
exp ...))))]))
|
|
78
|
-
|
|
79
|
-
(define (with-region-non-mono body)
|
|
80
|
-
(define arena (make-arena))
|
|
81
|
-
|
|
82
|
-
(define (lift m) (lambda (k)
|
|
83
|
-
; on suspend
|
|
84
|
-
(define fields (backup arena))
|
|
85
|
-
(m (lambda (a)
|
|
86
|
-
; on resume
|
|
87
|
-
(restore fields)
|
|
88
|
-
(k a)))))
|
|
89
|
-
|
|
90
|
-
(body lift arena))
|
|
91
|
-
|
|
92
|
-
(define (with-region body)
|
|
93
|
-
(define arena (make-arena))
|
|
94
|
-
|
|
95
|
-
(body arena))
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
; An Arena is a pointer to a list of cells
|
|
99
|
-
(define (make-arena) (box '()))
|
|
100
|
-
|
|
101
|
-
(define (fresh arena init)
|
|
102
|
-
(let* ([cell (box init)]
|
|
103
|
-
[cells (unbox arena)])
|
|
104
|
-
(set-box! arena (cons cell cells))
|
|
105
|
-
cell))
|
|
106
|
-
|
|
107
|
-
; Backup = List<(Cell, Value)>
|
|
108
|
-
|
|
109
|
-
; Arena -> Backup
|
|
110
|
-
(define (backup arena)
|
|
111
|
-
(let ([fields (unbox arena)])
|
|
112
|
-
(map (lambda (cell) (cons cell (unbox cell))) fields)))
|
|
113
|
-
|
|
114
|
-
; Backup -> ()
|
|
115
|
-
(define (restore data)
|
|
116
|
-
(for-each (lambda (cell-data)
|
|
117
|
-
(set-box! (car cell-data) (cdr cell-data)))
|
|
118
|
-
data))
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
module io/files
|
|
2
|
-
|
|
3
|
-
import bytes
|
|
4
|
-
|
|
5
|
-
import io
|
|
6
|
-
import io/error
|
|
7
|
-
|
|
8
|
-
extern js """
|
|
9
|
-
const fs = require("fs");
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
extern type FileDescriptor
|
|
13
|
-
// = llvm: 32bit integer extended to 64bit and stored into the "tag" of "Pos"
|
|
14
|
-
// = js: FileHandle (https://nodejs.org/api/fs.html#class-filehandle)
|
|
15
|
-
|
|
16
|
-
extern pure def show(fd: FileDescriptor): String =
|
|
17
|
-
llvm """
|
|
18
|
-
%res = call %Pos @c_filedescriptor_show(%Pos %fd)
|
|
19
|
-
ret %Pos %res
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* An abstract interface applications can program against.
|
|
25
|
-
*
|
|
26
|
-
* Can be interpreted into AsyncIO with the `filesystem`
|
|
27
|
-
* handler, or virtualized etc.
|
|
28
|
-
*
|
|
29
|
-
* See example below.
|
|
30
|
-
*/
|
|
31
|
-
interface Files {
|
|
32
|
-
def readFile(path: String): String
|
|
33
|
-
def writeFile(path: String, contents: String): Unit
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Represents the file opening modes with their respective flags
|
|
38
|
-
*/
|
|
39
|
-
type Mode {
|
|
40
|
-
// Most common modes
|
|
41
|
-
Append() // 'a' created if does not exist
|
|
42
|
-
ReadAppend() // 'a+' created if does not exist
|
|
43
|
-
ReadOnly() // 'r' exception if does not exist
|
|
44
|
-
ReadWrite() // 'w+' created if does not exist, truncated if exists
|
|
45
|
-
Write() // 'w' created if does not exist, truncated if exists
|
|
46
|
-
|
|
47
|
-
// Other modes
|
|
48
|
-
AppendExclusive() // 'ax' created if does not exist, fails if exists
|
|
49
|
-
ReadAppendExclusive() // 'ax+' created if does not exist, fails if exists
|
|
50
|
-
AppendSync() // 'as' created if does not exist, append in synchronous mode
|
|
51
|
-
ReadAppendSync() // 'as+' created if does not exist, append in synchronous mode
|
|
52
|
-
ReadSync() // 'rs' exception if does not exist, read in synchronous mode
|
|
53
|
-
ReadWriteSync() // 'rs+' exception if does not exist, read/write in synchronous mode
|
|
54
|
-
WriteExclusive() // 'wx' created if does not exist, truncated if exists, fails if exists
|
|
55
|
-
ReadWriteExclusive() // 'wx+' created if does not exist, truncated if exists, fails if exists
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
def modeName(modes: Mode): String = modes match {
|
|
59
|
-
case Append() => "a"
|
|
60
|
-
case ReadAppend() => "a+"
|
|
61
|
-
case ReadOnly() => "r"
|
|
62
|
-
case ReadWrite() => "w+"
|
|
63
|
-
case Write() => "w"
|
|
64
|
-
case AppendExclusive() => "ax"
|
|
65
|
-
case ReadAppendExclusive() => "ax+"
|
|
66
|
-
case AppendSync() => "as"
|
|
67
|
-
case ReadAppendSync() => "as+"
|
|
68
|
-
case ReadSync() => "rs"
|
|
69
|
-
case ReadWriteSync() => "rs+"
|
|
70
|
-
case WriteExclusive() => "wx"
|
|
71
|
-
case ReadWriteExclusive() => "wx+"
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Using the file system via node.js
|
|
77
|
-
*/
|
|
78
|
-
def filesystem[R] { program: => R / Files }: R / { AsyncIO, Exception[IOError] } = // TODO move Exception to be bidirectional
|
|
79
|
-
try { program() }
|
|
80
|
-
with Files {
|
|
81
|
-
def readFile(path) = resume(readFile(path))
|
|
82
|
-
def writeFile(path, contents) = resume(writeFile(path, contents))
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// AsyncIO-based API (default)
|
|
87
|
-
// ---------------------------
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Reads a file at given path as utf8 encoded string.
|
|
91
|
-
*/
|
|
92
|
-
def readFile(path: String): String / { AsyncIO, Exception[IOError] } = {
|
|
93
|
-
val fd = openFile(path, ReadOnly());
|
|
94
|
-
with on[IOError].finalize { closeFile(fd) }
|
|
95
|
-
|
|
96
|
-
val readSize = 1048576 // 1MB
|
|
97
|
-
var size = readSize
|
|
98
|
-
var buffer = bytes(size)
|
|
99
|
-
var offset = 0;
|
|
100
|
-
|
|
101
|
-
def go(): String = {
|
|
102
|
-
readFile(fd, buffer.slice(offset, min(readSize, size - offset)), -1) match {
|
|
103
|
-
case 0 =>
|
|
104
|
-
buffer.slice(0, offset).toUTF8
|
|
105
|
-
case n and n < 0 => panic("Error!")
|
|
106
|
-
case n =>
|
|
107
|
-
offset = offset + n
|
|
108
|
-
|
|
109
|
-
// we are at maximum capacity
|
|
110
|
-
if (n == readSize && (offset + readSize) > size) {
|
|
111
|
-
val newSize = size * 2
|
|
112
|
-
val newBuffer = bytes(newSize)
|
|
113
|
-
copy(buffer, newBuffer, 0, 0, size)
|
|
114
|
-
buffer = newBuffer
|
|
115
|
-
size = newSize
|
|
116
|
-
}
|
|
117
|
-
go()
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
go()
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Writes the (utf8 encoded) string `contents` into the specified file.
|
|
126
|
-
*/
|
|
127
|
-
def writeFile(path: String, contents: String): Unit / { AsyncIO, Exception[IOError] } = {
|
|
128
|
-
val fd = openFile(path, Write());
|
|
129
|
-
with on[IOError].finalize { closeFile(fd) }
|
|
130
|
-
|
|
131
|
-
val writeSize = 1048576 // 1MB
|
|
132
|
-
|
|
133
|
-
// this induces a memcpy that is not strictly necessary, since we use the buffer read-only
|
|
134
|
-
val buffer = contents.fromUTF8
|
|
135
|
-
val size = buffer.size
|
|
136
|
-
|
|
137
|
-
var offset = 0;
|
|
138
|
-
def remaining() = size - offset
|
|
139
|
-
|
|
140
|
-
def go(): Unit =
|
|
141
|
-
writeFile(fd, buffer.slice(offset, min(writeSize, remaining())), -1) match {
|
|
142
|
-
case 0 => ()
|
|
143
|
-
case n and n < 0 => panic("Error!")
|
|
144
|
-
case n =>
|
|
145
|
-
offset = offset + n;
|
|
146
|
-
if (remaining() > 0) go()
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
go()
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Opens the file at given path using the specified mode (read, write, etc.)
|
|
154
|
-
*/
|
|
155
|
-
def openFile(path: String, flags: Mode): FileDescriptor / { AsyncIO, Exception[IOError] } =
|
|
156
|
-
do performIO(box { k =>
|
|
157
|
-
val res = callback::openFile(path, flags,
|
|
158
|
-
box { fd => k(Success(fd)) },
|
|
159
|
-
box { error => k(Error(error, "Error opening file: " ++ error.message)) });
|
|
160
|
-
()
|
|
161
|
-
}).value
|
|
162
|
-
|
|
163
|
-
def readFile(fd: FileDescriptor, buffer: Bytes, offset: Int): Int / { AsyncIO, Exception[IOError] } =
|
|
164
|
-
do performIO(box { k =>
|
|
165
|
-
callback::readFile(fd, buffer, offset,
|
|
166
|
-
box { n => k(Success(n)) },
|
|
167
|
-
box { error => k(Error(error, "Error reading from file: " ++ error.message)) })
|
|
168
|
-
}).value
|
|
169
|
-
|
|
170
|
-
def writeFile(fd: FileDescriptor, buffer: Bytes, offset: Int): Int / { AsyncIO, Exception[IOError] } =
|
|
171
|
-
do performIO(box { k =>
|
|
172
|
-
callback::writeFile(fd, buffer, offset,
|
|
173
|
-
box { n => k(Success(n)) },
|
|
174
|
-
box { n =>
|
|
175
|
-
val error = n.fromCode
|
|
176
|
-
k(Error(error, "Error writing to file: " ++ error.message))
|
|
177
|
-
})
|
|
178
|
-
}).value
|
|
179
|
-
|
|
180
|
-
extern io def closeFile(fd: FileDescriptor): Unit =
|
|
181
|
-
js "fs.close(${fd}, () => $effekt.unit)"
|
|
182
|
-
llvm """
|
|
183
|
-
; extract the filedescriptor from the tag of the Pos
|
|
184
|
-
%tag = extractvalue %Pos ${fd}, 0
|
|
185
|
-
%fd_int = trunc i64 %tag to i32
|
|
186
|
-
|
|
187
|
-
call void @c_file_close(i32 %fd_int)
|
|
188
|
-
ret %Pos zeroinitializer
|
|
189
|
-
"""
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
// Callback-based API
|
|
193
|
-
// ------------------
|
|
194
|
-
// mostly used as an implementation detail.
|
|
195
|
-
namespace callback {
|
|
196
|
-
|
|
197
|
-
def openFile(path: String, mode: Mode,
|
|
198
|
-
onSuccess: FileDescriptor => Unit at {io, global},
|
|
199
|
-
onFailure: IOError => Unit at {io, global}): Unit =
|
|
200
|
-
openFile(path, modeName(mode), onSuccess, box { code => onFailure(fromCode(code)) })
|
|
201
|
-
|
|
202
|
-
def readFile(fd: FileDescriptor, buffer: Bytes, offset: Int,
|
|
203
|
-
onSuccess: (Int) => Unit at {io, global},
|
|
204
|
-
onFailure: IOError => Unit at {io, global}): Unit =
|
|
205
|
-
readFile(fd, buffer, offset, onSuccess, box { code => onFailure(fromCode(code)) })
|
|
206
|
-
|
|
207
|
-
// The following are supposed to be internal
|
|
208
|
-
|
|
209
|
-
extern io def openFile(path: String, mode: String,
|
|
210
|
-
onSuccess: (FileDescriptor) => Unit at {io, global},
|
|
211
|
-
onFailure: (Int) => Unit at {io, global}): Unit =
|
|
212
|
-
js "openFile(${path}, ${mode}, ${onSuccess}, ${onFailure})"
|
|
213
|
-
llvm """
|
|
214
|
-
; stack allocate
|
|
215
|
-
%onSuccess_ptr = alloca %Neg
|
|
216
|
-
store %Neg %onSuccess, %Neg* %onSuccess_ptr
|
|
217
|
-
|
|
218
|
-
%onFailure_ptr = alloca %Neg
|
|
219
|
-
store %Neg %onFailure, %Neg* %onFailure_ptr
|
|
220
|
-
|
|
221
|
-
call void @c_file_open(%Pos ${path}, %Pos ${mode}, ptr %onSuccess_ptr, ptr %onFailure_ptr) #0
|
|
222
|
-
ret %Pos zeroinitializer
|
|
223
|
-
"""
|
|
224
|
-
|
|
225
|
-
extern io def readFile(fd: FileDescriptor, buffer: Bytes, offset: Int,
|
|
226
|
-
onSuccess: (Int) => Unit at {io, global},
|
|
227
|
-
onFailure: (Int) => Unit at {io, global}): Unit =
|
|
228
|
-
js "readFile(${fd}, ${buffer}, ${offset}, ${onSuccess}, ${onFailure})"
|
|
229
|
-
llvm """
|
|
230
|
-
; extract the filedescriptor from the tag of the Pos
|
|
231
|
-
%tag = extractvalue %Pos %${fd}, 0
|
|
232
|
-
%fd_int = trunc i64 %tag to i32
|
|
233
|
-
|
|
234
|
-
; stack allocate
|
|
235
|
-
%onSuccess_ptr = alloca %Neg
|
|
236
|
-
store %Neg ${onSuccess}, %Neg* %onSuccess_ptr
|
|
237
|
-
|
|
238
|
-
%onFailure_ptr = alloca %Neg
|
|
239
|
-
store %Neg ${onFailure}, %Neg* %onFailure_ptr
|
|
240
|
-
|
|
241
|
-
call void @c_file_read(i32 %fd_int, %Pos ${buffer}, i64 noundef ${offset}, ptr %onSuccess_ptr, ptr %onFailure_ptr) #0
|
|
242
|
-
ret %Pos zeroinitializer
|
|
243
|
-
"""
|
|
244
|
-
|
|
245
|
-
extern io def writeFile(fd: FileDescriptor, buffer: Bytes, offset: Int,
|
|
246
|
-
onSuccess: (Int) => Unit at {io, global},
|
|
247
|
-
onFailure: (Int) => Unit at {io, global}): Unit =
|
|
248
|
-
js "writeFile(${fd}, ${buffer}, ${offset}, ${onSuccess}, ${onFailure})"
|
|
249
|
-
llvm """
|
|
250
|
-
; extract the filedescriptor from the tag of the Pos
|
|
251
|
-
%tag = extractvalue %Pos ${fd}, 0
|
|
252
|
-
%fd_int = trunc i64 %tag to i32
|
|
253
|
-
|
|
254
|
-
; stack allocate
|
|
255
|
-
%onSuccess_ptr = alloca %Neg
|
|
256
|
-
store %Neg ${onSuccess}, %Neg* %onSuccess_ptr
|
|
257
|
-
|
|
258
|
-
%onFailure_ptr = alloca %Neg
|
|
259
|
-
store %Neg ${onFailure}, %Neg* %onFailure_ptr
|
|
260
|
-
|
|
261
|
-
call void @c_file_write(i32 %fd_int, %Pos ${buffer}, i64 noundef ${offset}, ptr %onSuccess_ptr, ptr %onFailure_ptr) #0
|
|
262
|
-
ret %Pos zeroinitializer
|
|
263
|
-
"""
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
namespace examples {
|
|
268
|
-
|
|
269
|
-
// Example illustrating using abstract files interface
|
|
270
|
-
// and interpreting it into asynchronous IO
|
|
271
|
-
def copy(from: String, to: String): Unit / Files = {
|
|
272
|
-
val contents = do readFile(from)
|
|
273
|
-
do writeFile(to, contents)
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
def main() = eventloop(box {
|
|
277
|
-
with on[IOError].panic;
|
|
278
|
-
with filesystem;
|
|
279
|
-
|
|
280
|
-
copy("README.md", "out/test.md")
|
|
281
|
-
})
|
|
282
|
-
}
|