@reventlessdev/reventless-seed-aws 1.0.0-alpha.10
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/CHANGELOG.md +69 -0
- package/LICENSE +202 -0
- package/lib/bs/.compiler.log +2 -0
- package/lib/bs/.sourcedirs.json +1 -0
- package/lib/bs/build.ninja +0 -0
- package/lib/bs/compiler-info.json +8 -0
- package/lib/bs/src/ReventlessSeedAws.ast +0 -0
- package/lib/bs/src/ReventlessSeedAws.cmi +0 -0
- package/lib/bs/src/ReventlessSeedAws.cmj +0 -0
- package/lib/bs/src/ReventlessSeedAws.cmt +0 -0
- package/lib/bs/src/ReventlessSeedAws.res +328 -0
- package/lib/bs/src/ReventlessSeedAws.res.mjs +309 -0
- package/lib/bs/src/ReventlessSeedAws_Reconcile.ast +0 -0
- package/lib/bs/src/ReventlessSeedAws_Reconcile.cmi +0 -0
- package/lib/bs/src/ReventlessSeedAws_Reconcile.cmj +0 -0
- package/lib/bs/src/ReventlessSeedAws_Reconcile.cmt +0 -0
- package/lib/bs/src/ReventlessSeedAws_Reconcile.res +389 -0
- package/lib/bs/src/ReventlessSeedAws_Reconcile.res.mjs +318 -0
- package/lib/bs/src/ReventlessSeedAws_Reset.ast +0 -0
- package/lib/bs/src/ReventlessSeedAws_Reset.cmi +0 -0
- package/lib/bs/src/ReventlessSeedAws_Reset.cmj +0 -0
- package/lib/bs/src/ReventlessSeedAws_Reset.cmt +0 -0
- package/lib/bs/src/ReventlessSeedAws_Reset.res +948 -0
- package/lib/bs/src/ReventlessSeedAws_Reset.res.mjs +861 -0
- package/lib/bs/tests/EndpointResolutionTest.ast +0 -0
- package/lib/bs/tests/EndpointResolutionTest.cmi +0 -0
- package/lib/bs/tests/EndpointResolutionTest.cmj +0 -0
- package/lib/bs/tests/EndpointResolutionTest.cmt +0 -0
- package/lib/bs/tests/EndpointResolutionTest.res +83 -0
- package/lib/bs/tests/EndpointResolutionTest.res.mjs +115 -0
- package/lib/bs/tests/ObjectStoreReconcileTest.ast +0 -0
- package/lib/bs/tests/ObjectStoreReconcileTest.cmi +0 -0
- package/lib/bs/tests/ObjectStoreReconcileTest.cmj +0 -0
- package/lib/bs/tests/ObjectStoreReconcileTest.cmt +0 -0
- package/lib/bs/tests/ObjectStoreReconcileTest.res +84 -0
- package/lib/bs/tests/ObjectStoreReconcileTest.res.mjs +102 -0
- package/lib/bs/tests/ObjectStoreResetTest.ast +0 -0
- package/lib/bs/tests/ObjectStoreResetTest.cmi +0 -0
- package/lib/bs/tests/ObjectStoreResetTest.cmj +0 -0
- package/lib/bs/tests/ObjectStoreResetTest.cmt +0 -0
- package/lib/bs/tests/ObjectStoreResetTest.res +170 -0
- package/lib/bs/tests/ObjectStoreResetTest.res.mjs +211 -0
- package/lib/ocaml/.compiler.log +2 -0
- package/lib/ocaml/EndpointResolutionTest.ast +0 -0
- package/lib/ocaml/EndpointResolutionTest.cmi +0 -0
- package/lib/ocaml/EndpointResolutionTest.cmj +0 -0
- package/lib/ocaml/EndpointResolutionTest.cmt +0 -0
- package/lib/ocaml/EndpointResolutionTest.res +83 -0
- package/lib/ocaml/ObjectStoreReconcileTest.ast +0 -0
- package/lib/ocaml/ObjectStoreReconcileTest.cmi +0 -0
- package/lib/ocaml/ObjectStoreReconcileTest.cmj +0 -0
- package/lib/ocaml/ObjectStoreReconcileTest.cmt +0 -0
- package/lib/ocaml/ObjectStoreReconcileTest.res +84 -0
- package/lib/ocaml/ObjectStoreResetTest.ast +0 -0
- package/lib/ocaml/ObjectStoreResetTest.cmi +0 -0
- package/lib/ocaml/ObjectStoreResetTest.cmj +0 -0
- package/lib/ocaml/ObjectStoreResetTest.cmt +0 -0
- package/lib/ocaml/ObjectStoreResetTest.res +170 -0
- package/lib/ocaml/ReventlessSeedAws.ast +0 -0
- package/lib/ocaml/ReventlessSeedAws.cmi +0 -0
- package/lib/ocaml/ReventlessSeedAws.cmj +0 -0
- package/lib/ocaml/ReventlessSeedAws.cmt +0 -0
- package/lib/ocaml/ReventlessSeedAws.res +328 -0
- package/lib/ocaml/ReventlessSeedAws_Reconcile.ast +0 -0
- package/lib/ocaml/ReventlessSeedAws_Reconcile.cmi +0 -0
- package/lib/ocaml/ReventlessSeedAws_Reconcile.cmj +0 -0
- package/lib/ocaml/ReventlessSeedAws_Reconcile.cmt +0 -0
- package/lib/ocaml/ReventlessSeedAws_Reconcile.res +389 -0
- package/lib/ocaml/ReventlessSeedAws_Reset.ast +0 -0
- package/lib/ocaml/ReventlessSeedAws_Reset.cmi +0 -0
- package/lib/ocaml/ReventlessSeedAws_Reset.cmj +0 -0
- package/lib/ocaml/ReventlessSeedAws_Reset.cmt +0 -0
- package/lib/ocaml/ReventlessSeedAws_Reset.res +948 -0
- package/package.json +32 -0
- package/rescript.json +29 -0
- package/src/ReventlessSeedAws.res +328 -0
- package/src/ReventlessSeedAws.res.mjs +309 -0
- package/src/ReventlessSeedAws_Reconcile.res +389 -0
- package/src/ReventlessSeedAws_Reconcile.res.mjs +318 -0
- package/src/ReventlessSeedAws_Reset.res +948 -0
- package/src/ReventlessSeedAws_Reset.res.mjs +861 -0
- package/tests/EndpointResolutionTest.res +83 -0
- package/tests/EndpointResolutionTest.res.mjs +115 -0
- package/tests/ObjectStoreReconcileTest.res +84 -0
- package/tests/ObjectStoreReconcileTest.res.mjs +102 -0
- package/tests/ObjectStoreResetTest.res +170 -0
- package/tests/ObjectStoreResetTest.res.mjs +211 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
|
|
3
|
+
import * as JestGlobals from "@reventlessdev/rescript-jest/src/JestGlobals.res.mjs";
|
|
4
|
+
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
5
|
+
import * as ReventlessSeedAws_Reset from "../src/ReventlessSeedAws_Reset.res.mjs";
|
|
6
|
+
|
|
7
|
+
function obj(entries) {
|
|
8
|
+
return Object.fromEntries(entries);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function str(prim) {
|
|
12
|
+
return prim;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function storeEntry(bucket, prefix) {
|
|
16
|
+
return Object.fromEntries([
|
|
17
|
+
[
|
|
18
|
+
"bucketName",
|
|
19
|
+
bucket
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
"keyPrefix",
|
|
23
|
+
prefix
|
|
24
|
+
]
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function output(entries) {
|
|
29
|
+
return Object.fromEntries(entries);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function store(qualified, bucket, prefix) {
|
|
33
|
+
let match = Stdlib_Option.getOr(ReventlessSeedAws_Reset.splitQualified(qualified), [
|
|
34
|
+
"",
|
|
35
|
+
qualified
|
|
36
|
+
]);
|
|
37
|
+
return {
|
|
38
|
+
qualified: qualified,
|
|
39
|
+
plugin: match[0],
|
|
40
|
+
store: match[1],
|
|
41
|
+
bucketName: bucket,
|
|
42
|
+
keyPrefix: prefix
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
globalThis.describe("parseObjectStores", () => {
|
|
47
|
+
globalThis.test("splits the qualified key into plugin and store", () => {
|
|
48
|
+
let entries = [[
|
|
49
|
+
"Catalog.productImages",
|
|
50
|
+
storeEntry("alpha-stores", "productImages")
|
|
51
|
+
]];
|
|
52
|
+
let other = ReventlessSeedAws_Reset.parseObjectStores(Object.fromEntries(entries));
|
|
53
|
+
if (other.TAG === "Ok") {
|
|
54
|
+
let match = other._0;
|
|
55
|
+
if (match.length === 1) {
|
|
56
|
+
let s = match[0];
|
|
57
|
+
globalThis.expect([
|
|
58
|
+
s.plugin,
|
|
59
|
+
s.store,
|
|
60
|
+
s.bucketName,
|
|
61
|
+
s.keyPrefix
|
|
62
|
+
]).toEqual([
|
|
63
|
+
"Catalog",
|
|
64
|
+
"productImages",
|
|
65
|
+
"alpha-stores",
|
|
66
|
+
"productImages"
|
|
67
|
+
]);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
JestGlobals.fail(`expected one parsed store, got ` + Stdlib_Option.getOr(JSON.stringify(other), "?"));
|
|
72
|
+
});
|
|
73
|
+
globalThis.test("splits at the first dot only", () => {
|
|
74
|
+
let match = ReventlessSeedAws_Reset.splitQualified("Catalog.product.images");
|
|
75
|
+
if (match !== undefined) {
|
|
76
|
+
globalThis.expect([
|
|
77
|
+
match[0],
|
|
78
|
+
match[1]
|
|
79
|
+
]).toEqual([
|
|
80
|
+
"Catalog",
|
|
81
|
+
"product.images"
|
|
82
|
+
]);
|
|
83
|
+
return;
|
|
84
|
+
} else {
|
|
85
|
+
return JestGlobals.fail("expected a split");
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
globalThis.test("absent output yields no stores", () => {
|
|
89
|
+
let stores = ReventlessSeedAws_Reset.parseObjectStores(undefined);
|
|
90
|
+
if (stores.TAG !== "Ok") {
|
|
91
|
+
return JestGlobals.fail(stores._0);
|
|
92
|
+
}
|
|
93
|
+
globalThis.expect(stores._0.length).toBe(0);
|
|
94
|
+
});
|
|
95
|
+
globalThis.test("a malformed entry is an error, not a skip", () => {
|
|
96
|
+
let entries = [[
|
|
97
|
+
"Catalog.productImages",
|
|
98
|
+
Object.fromEntries([[
|
|
99
|
+
"keyPrefix",
|
|
100
|
+
"x"
|
|
101
|
+
]])
|
|
102
|
+
]];
|
|
103
|
+
let message = ReventlessSeedAws_Reset.parseObjectStores(Object.fromEntries(entries));
|
|
104
|
+
if (message.TAG === "Ok") {
|
|
105
|
+
return JestGlobals.fail("expected a malformed entry to be refused");
|
|
106
|
+
}
|
|
107
|
+
globalThis.expect(message._0.includes("Catalog.productImages")).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
globalThis.test("an unqualified key is an error", () => {
|
|
110
|
+
let entries = [[
|
|
111
|
+
"productImages",
|
|
112
|
+
storeEntry("alpha-stores", "productImages")
|
|
113
|
+
]];
|
|
114
|
+
let message = ReventlessSeedAws_Reset.parseObjectStores(Object.fromEntries(entries));
|
|
115
|
+
if (message.TAG === "Ok") {
|
|
116
|
+
return JestGlobals.fail("expected an unqualified key to be refused");
|
|
117
|
+
}
|
|
118
|
+
globalThis.expect(message._0.includes("productImages")).toBe(true);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
globalThis.describe("validateStores", () => {
|
|
123
|
+
globalThis.test("distinct prefixes in one bucket are fine", () => {
|
|
124
|
+
globalThis.expect(ReventlessSeedAws_Reset.validateStores([
|
|
125
|
+
store("Catalog.productImages", "alpha-stores", "productImages"),
|
|
126
|
+
store("Ordering.labels", "alpha-stores", "labels")
|
|
127
|
+
])).toEqual({
|
|
128
|
+
TAG: "Ok",
|
|
129
|
+
_0: undefined
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
globalThis.test("two plugins on one prefix are refused", () => {
|
|
133
|
+
let message = ReventlessSeedAws_Reset.validateStores([
|
|
134
|
+
store("Catalog.productImages", "alpha-stores", "productImages"),
|
|
135
|
+
store("Ordering.productImages", "alpha-stores", "productImages")
|
|
136
|
+
]);
|
|
137
|
+
if (message.TAG === "Ok") {
|
|
138
|
+
return JestGlobals.fail("expected a collision to be refused");
|
|
139
|
+
}
|
|
140
|
+
let message$1 = message._0;
|
|
141
|
+
globalThis.expect(message$1.includes("Catalog.productImages") && message$1.includes("Ordering.productImages")).toBe(true);
|
|
142
|
+
});
|
|
143
|
+
globalThis.test("an enclosing prefix is refused", () => {
|
|
144
|
+
let message = ReventlessSeedAws_Reset.validateStores([
|
|
145
|
+
store("Legacy.catalog", "alpha-stores", "Catalog"),
|
|
146
|
+
store("Catalog.productImages", "alpha-stores", "Catalog/productImages")
|
|
147
|
+
]);
|
|
148
|
+
if (message.TAG === "Ok") {
|
|
149
|
+
return JestGlobals.fail("expected an enclosing prefix to be refused");
|
|
150
|
+
}
|
|
151
|
+
globalThis.expect(message._0.includes("encloses")).toBe(true);
|
|
152
|
+
});
|
|
153
|
+
globalThis.test("one prefix in two different buckets is fine", () => {
|
|
154
|
+
globalThis.expect(ReventlessSeedAws_Reset.validateStores([
|
|
155
|
+
store("Catalog.productImages", "catalog-productImages", "productImages"),
|
|
156
|
+
store("Ordering.productImages", "ordering-productImages", "productImages")
|
|
157
|
+
])).toEqual({
|
|
158
|
+
TAG: "Ok",
|
|
159
|
+
_0: undefined
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
globalThis.test("a sibling prefix sharing a character run is fine", () => {
|
|
163
|
+
globalThis.expect(ReventlessSeedAws_Reset.validateStores([
|
|
164
|
+
store("Catalog.images", "alpha-stores", "images"),
|
|
165
|
+
store("Catalog.imagesArchive", "alpha-stores", "images-archive")
|
|
166
|
+
])).toEqual({
|
|
167
|
+
TAG: "Ok",
|
|
168
|
+
_0: undefined
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
globalThis.test("an empty or slash-bearing store name is refused", () => {
|
|
172
|
+
let match = ReventlessSeedAws_Reset.validateStores([store("Catalog.productImages", "alpha-stores", "")]);
|
|
173
|
+
if (match.TAG === "Ok") {
|
|
174
|
+
JestGlobals.fail("expected an empty prefix to be refused");
|
|
175
|
+
}
|
|
176
|
+
let match$1 = ReventlessSeedAws_Reset.validateStores([store("Catalog.a/b", "alpha-stores", "a/b")]);
|
|
177
|
+
if (match$1.TAG === "Ok") {
|
|
178
|
+
return JestGlobals.fail("expected a store name containing a slash to be refused");
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
globalThis.describe("pluginOf", () => {
|
|
184
|
+
globalThis.test("prefers the declared plugin name over the label", () => {
|
|
185
|
+
globalThis.expect(ReventlessSeedAws_Reset.pluginOf({
|
|
186
|
+
projectDir: "../catalog-aws",
|
|
187
|
+
label: "catalog",
|
|
188
|
+
group: "Domain",
|
|
189
|
+
plugin: "Catalog"
|
|
190
|
+
})).toBe("Catalog");
|
|
191
|
+
});
|
|
192
|
+
globalThis.test("falls back to the label when no plugin name is declared", () => {
|
|
193
|
+
globalThis.expect(ReventlessSeedAws_Reset.pluginOf({
|
|
194
|
+
projectDir: ".",
|
|
195
|
+
label: "platform",
|
|
196
|
+
group: "Platform"
|
|
197
|
+
})).toBe("platform");
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
let Reset;
|
|
202
|
+
|
|
203
|
+
export {
|
|
204
|
+
Reset,
|
|
205
|
+
obj,
|
|
206
|
+
str,
|
|
207
|
+
storeEntry,
|
|
208
|
+
output,
|
|
209
|
+
store,
|
|
210
|
+
}
|
|
211
|
+
/* Not a pure module */
|