Revision 3d6ffa57
Added by koszko over 1 year ago
| background/indexeddb_files_server.js | ||
|---|---|---|
| 62 | 62 |
.map(s => haketilodb.idb_get(getting.tx, "files", s.sha256)); |
| 63 | 63 |
|
| 64 | 64 |
const deps_proms = (definition.dependencies || []) |
| 65 |
.map(dep_id => get_resource_files(getting, dep_id));
|
|
| 65 |
.map(res_ref => get_resource_files(getting, res_ref.identifier));
|
|
| 66 | 66 |
|
| 67 | 67 |
const files = (await Promise.all(file_proms)).map(f => f.contents); |
| 68 | 68 |
getting.files_by_res_id.set(id, files); |
| ... | ... | |
| 93 | 93 |
processed.add(id); |
| 94 | 94 |
|
| 95 | 95 |
const ds = (defs_by_res_id.get(id).dependencies || []).reverse(); |
| 96 |
ds.forEach(dep_id => to_process.push(["start", dep_id]));
|
|
| 96 |
ds.forEach(res_ref => to_process.push(["start", res_ref.identifier]));
|
|
| 97 | 97 |
} |
| 98 | 98 |
|
| 99 | 99 |
return files; |
| background/patterns_query_manager.js | ||
|---|---|---|
| 99 | 99 |
|
| 100 | 100 |
function register(kind, object) {
|
| 101 | 101 |
if (kind === "mappings") {
|
| 102 |
for (const [pattern, resource] of Object.entries(object.payloads)) |
|
| 102 |
for (const [pattern, resource] of Object.entries(object.payloads || {}))
|
|
| 103 | 103 |
pqt.register(tree, pattern, object.identifier, resource); |
| 104 | 104 |
} else /* if (kind === "blocking") */ {
|
| 105 | 105 |
/* |
| ... | ... | |
| 120 | 120 |
const old_version = currently_registered.get(change.key); |
| 121 | 121 |
if (old_version !== undefined) {
|
| 122 | 122 |
if (kind === "mappings") {
|
| 123 |
for (const pattern in old_version.payloads) |
|
| 123 |
for (const pattern in old_version.payloads || {})
|
|
| 124 | 124 |
pqt.deregister(tree, pattern, change.key); |
| 125 | 125 |
} else /* if (kind === "blocking") */ {
|
| 126 | 126 |
pqt.deregister(tree, change.key, "~allow"); |
| html/install.js | ||
|---|---|---|
| 211 | 211 |
delete response.json.api_schema_version; |
| 212 | 212 |
delete response.json.api_schema_revision; |
| 213 | 213 |
|
| 214 |
const files = response.json.source_copyright
|
|
| 215 |
.concat(item_type === "resource" ? response.json.scripts : []);
|
|
| 214 |
const scripts = item_type === "resource" && response.json.scripts;
|
|
| 215 |
const files = response.json.source_copyright.concat(scripts || []);
|
|
| 216 | 216 |
|
| 217 | 217 |
if (item_type === "mapping") {
|
| 218 |
for (const res_ref of Object.values(response.json.payloads)) |
|
| 218 |
for (const res_ref of Object.values(response.json.payloads || {}))
|
|
| 219 | 219 |
process_item(work, "resource", res_ref.identifier); |
| 220 | 220 |
} else {
|
| 221 |
for (const res_id of (response.json.dependencies || []))
|
|
| 222 |
process_item(work, "resource", res_id);
|
|
| 221 |
for (const res_ref of (response.json.dependencies || []))
|
|
| 222 |
process_item(work, "resource", res_ref.identifier);
|
|
| 223 | 223 |
} |
| 224 | 224 |
|
| 225 | 225 |
/* |
| html/item_preview.js | ||
|---|---|---|
| 82 | 82 |
preview_object.source_name.innerText = resource.source_name; |
| 83 | 83 |
|
| 84 | 84 |
[...preview_object.dependencies.childNodes].forEach(n => n.remove()); |
| 85 |
populate_list(preview_object.dependencies, resource.dependencies); |
|
| 85 |
|
|
| 86 |
const deps_refs = resource.dependencies || []; |
|
| 87 |
populate_list(preview_object.dependencies, |
|
| 88 |
deps_refs.map(res_ref => res_ref.identifier)); |
|
| 86 | 89 |
|
| 87 | 90 |
const link_maker = file_ref => link_cb(preview_object, file_ref); |
| 88 | 91 |
|
| ... | ... | |
| 109 | 112 |
preview_object.source_name.innerText = mapping.source_name; |
| 110 | 113 |
|
| 111 | 114 |
[...preview_object.payloads.childNodes].forEach(n => n.remove()); |
| 112 |
for (const [pattern, payload] of Object.entries(mapping.payloads).sort()) {
|
|
| 115 |
const payload_entries = Object.entries(mapping.payloads || {}).sort();
|
|
| 116 |
for (const [pattern, payload] of payload_entries) {
|
|
| 113 | 117 |
/* We use a non-breaking space because normal space would be ignored. */ |
| 114 | 118 |
const [nbsp, rarrow] = [160, 0x2192].map(n => String.fromCodePoint(n)); |
| 115 | 119 |
const texts = [`${pattern}${nbsp}`, `${rarrow} ${payload.identifier}`];
|
| test/unit/test_indexeddb_files_server.py | ||
|---|---|---|
| 41 | 41 |
resource = make_sample_resource(with_files=False) |
| 42 | 42 |
|
| 43 | 43 |
resource['identifier'] = f'res-{n}'
|
| 44 |
resource['dependencies'] = [f'res-{m}'
|
|
| 44 |
resource['dependencies'] = [{'identifier': f'res-{m}'}
|
|
| 45 | 45 |
for m in range(max(n - 4, 0), n)] |
| 46 | 46 |
resource['scripts'] = [sample_file_ref(f'file_{n}_{i}', sample_files)
|
| 47 | 47 |
for i in range(2)] |
| ... | ... | |
| 141 | 141 |
del sample_data_copy['resources']['res-3'] |
| 142 | 142 |
elif error == 'circular': |
| 143 | 143 |
res3_defs = sample_data_copy['resources']['res-3'].values() |
| 144 |
next(iter(res3_defs))['dependencies'].append('res-8')
|
|
| 144 |
next(iter(res3_defs))['dependencies'].append({'identifier': 'res-8'})
|
|
| 145 | 145 |
|
| 146 | 146 |
prepare_test_page(sample_data_copy, execute_in_page) |
| 147 | 147 |
|
| test/unit/test_item_list.py | ||
|---|---|---|
| 38 | 38 |
'version': [2021, 11, 10], |
| 39 | 39 |
'revision': 1, |
| 40 | 40 |
'description': 'greets an apple', |
| 41 |
'dependencies': ['hello-message'],
|
|
| 41 |
'dependencies': [{'identifier': 'hello-message'}],
|
|
| 42 | 42 |
'scripts': [ |
| 43 | 43 |
sample_file_ref('hello.js'),
|
| 44 | 44 |
sample_file_ref('bye.js')
|
| test/unit/test_item_preview.py | ||
|---|---|---|
| 51 | 51 |
|
| 52 | 52 |
for string in [ |
| 53 | 53 |
*filter(lambda v: type(v) is str, sample_resource.values()), |
| 54 |
*sample_resource['dependencies'],
|
|
| 54 |
*[rr['identifier'] for rr in sample_resource['dependencies']],
|
|
| 55 | 55 |
*[c['file'] for k in ('source_copyright', 'scripts')
|
| 56 | 56 |
for c in sample_resource[k]], |
| 57 | 57 |
item_version_string(sample_resource, True) |
| ... | ... | |
| 61 | 61 |
sample_resource['identifier'] = 'hellopear' |
| 62 | 62 |
sample_resource['long_name'] = 'Hello Pear' |
| 63 | 63 |
sample_resource['description'] = 'greets a pear' |
| 64 |
sample_resource['dependencies'] = ['hello-msg'],
|
|
| 64 |
sample_resource['dependencies'] = [{'identifier': 'hello-msg'}]
|
|
| 65 | 65 |
for key in ('scripts', 'source_copyright'):
|
| 66 | 66 |
for file_ref in sample_resource[key]: |
| 67 | 67 |
file_ref['file'] = file_ref['file'].replace('.', '_')
|
| test/unit/utils.py | ||
|---|---|---|
| 118 | 118 |
'version': [2021, 11, 10], |
| 119 | 119 |
'revision': 1, |
| 120 | 120 |
'description': 'greets an apple', |
| 121 |
'dependencies': ['hello-message'],
|
|
| 121 |
'dependencies': [{'identifier': 'hello-message'}],
|
|
| 122 | 122 |
'scripts': [ |
| 123 | 123 |
sample_file_ref('hello.js'),
|
| 124 | 124 |
sample_file_ref('bye.js')
|
| test/world_wide_library.py | ||
|---|---|---|
| 127 | 127 |
sample_resource_templates.append({
|
| 128 | 128 |
'id_suffix': ''.join(letters), |
| 129 | 129 |
'files_count': deps[0], |
| 130 |
'dependencies': [f'resource_{l}' for l in letters]
|
|
| 130 |
'dependencies': [{'identifier': f'resource_{l}'} for l in letters]
|
|
| 131 | 131 |
}) |
| 132 | 132 |
|
| 133 | 133 |
suffixes = [srt['id_suffix'] for srt in sample_resource_templates] |
| 134 | 134 |
sample_resource_templates.append({
|
| 135 | 135 |
'id_suffix': '-'.join(suffixes), |
| 136 | 136 |
'files_count': 2, |
| 137 |
'dependencies': [f'resource_{suffix}' for suffix in suffixes]
|
|
| 137 |
'dependencies': [{'identifier': f'resource_{suf}'} for suf in suffixes]
|
|
| 138 | 138 |
}) |
| 139 | 139 |
|
| 140 | 140 |
for i in range(10): |
Also available in: Unified diff
make resource dependency specifier an object